package Demo;

public class demo01 {

	public static void main(String[] args) {
		 /**
	     *多态（前提条件是存在继承关系）：
	     *      1.向上转型和向下转型的概念：
	     *          向上转型：子---->父 （upcasting）
	     *          一般体现在：方法形参是父类，实参是子类 
	     *          向下转型：父---->子（downcasting）需要添加强制类型转换符
	     *          不管是向上转型还是向下转型，首先他们之间必须有继承关系。
	     *          什么时候需要向下转型：
	     *              需要调用或者执行子类对象中特有的方法，必须进行向下转型，才能调用
	     *           向下转型有风险吗：
	     *              容易出现ClassCastException（类型转换异常）
	     *            怎么避免这个风险：
	     *              instanceof运算符，可以在程序运行阶段动态的判断某个引用指向大的对象
	     *              是否为某一种类型，养成好习惯，向下转型之前一定要使用instanceof运算符判断
	     *
	     *         2.什么是多态：
	     *              多种形态，多种状态，编译和运行有两个不同的状态。
	     *              编译期叫做静态绑定。
	     *              运行期叫做动态绑定。
	     *              Animal a = new cat（）；
	     *              多态的典型代码：父类型的引用指向子类型的对象。
	     *              
	     *          多态前提条件：继承关系  方法覆盖，属性变量没有重写  调用属性得到的是引用类型的属性值。
	     *
	     *          3.什么时候必须进行向下转型：
	     *                需要调用或者执行子类对象中特有的方法，必须进行向下转型，才能调用
	     *
	     *           4.多态的作用：
	     *           	  降低代码重复率，提高开发效率
	     *                降低程序的耦合度，提高程序的扩展力。
	     *
	     */

	}

}
